# MIT License
#
# Copyright (c) 2023 Dechin Chen
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.

h_names = {'ACE': {'CH3': ['H1', 'H2', 'H3']},
          'ALA': {'N': ['H'], 'CA': ['HA'], 'CB': ['HB1', 'HB2', 'HB3']},
          'ARG': {'N': ['H'], 'CA': ['HA'], 'CB': ['HB2', 'HB3'], 'CG': ['HG2', 'HG3'], 'CD': ['HD2', 'HD3'],
                  'NE': ['HE'], 'NH1': ['HH11', 'HH12'], 'NH2': ['HH21', 'HH22']},
          'ASN': {'N': ['H'], 'CA': ['HA'], 'CB': ['HB2', 'HB3'], 'ND2': ['HD21', 'HD22']},
          'ASP': {'N': ['H'], 'CA': ['HA'], 'CB': ['HB2', 'HB3']},
          'CALA': {'N': ['H'], 'CA': ['HA'], 'CB': ['HB1', 'HB2', 'HB3'], 'C': ['OXT']},
          'CARG': {'N': ['H'], 'CA': ['HA'], 'CB': ['HB2', 'HB3'], 'CG': ['HG2', 'HG3'], 'CD': ['HD2', 'HD3'],
                   'NE': ['HE'], 'NH1': ['HH11', 'HH12'], 'NH2': ['HH21', 'HH22'], 'C': ['OXT']},
          'CASN': {'N': ['H'], 'CA': ['HA'], 'CB': ['HB2', 'HB3'], 'ND2': ['HD21', 'HD22'], 'C': ['OXT']},
          'CASP': {'N': ['H'], 'CA': ['HA'], 'CB': ['HB2', 'HB3'], 'C': ['OXT']},
          'CCYS': {'N': ['H'], 'CA': ['HA'], 'CB': ['HB2', 'HB3'], 'SG': ['HG'], 'C': ['OXT']},
          'CGLN': {'N': ['H'], 'CA': ['HA'], 'CB': ['HB2', 'HB3'], 'CG': ['HG2', 'HG3'], 'NE2': ['HE21', 'HE22'],
                   'C': ['OXT']},
          'CGLU': {'N': ['H'], 'CA': ['HA'], 'CB': ['HB2', 'HB3'], 'CG': ['HG2', 'HG3'], 'C': ['OXT']},
          'CGLY': {'N': ['H'], 'CA': ['HA2', 'HA3'], 'C': ['OXT']},
          'CHID': {'N': ['H'], 'CA': ['HA'], 'CB': ['HB2', 'HB3'], 'ND1': ['HD1'], 'CE1': ['HE1'], 'CD2': ['HD2'],
                   'C': ['OXT']},
          'CHIS': {'N': ['H'], 'CA': ['HA'], 'CB': ['HB2', 'HB3'], 'CE1': ['HE1'], 'NE2': ['HE2'], 'CD2': ['HD2'],
                   'C': ['OXT']},
          'CILE': {'N': ['H'], 'CA': ['HA'], 'CB': ['HB'], 'CG2': ['HG21', 'HG22', 'HG23'], 'CG1': ['HG12', 'HG13'],
                   'CD1': ['HD11', 'HD12', 'HD13'], 'C': ['OXT']},
          'CLEU': {'N': ['H'], 'CA': ['HA'], 'CB': ['HB2', 'HB3'], 'CG': ['HG'], 'CD1': ['HD11', 'HD12', 'HD13'],
                   'CD2': ['HD21', 'HD22', 'HD23'], 'C': ['OXT']},
          'CLYS': {'N': ['H'], 'CA': ['HA'], 'CB': ['HB2', 'HB3'], 'CG': ['HG2', 'HG3'], 'CD': ['HD2', 'HD3'],
                   'CE': ['HE2', 'HE3'], 'NZ': ['HZ1', 'HZ2', 'HZ3'], 'C': ['OXT']},
          'CMET': {'N': ['H'], 'CA': ['HA'], 'CB': ['HB2', 'HB3'], 'CG': ['HG2', 'HG3'], 'CE': ['HE1', 'HE2', 'HE3'],
                   'C': ['OXT']},
          'CPHE': {'N': ['H'], 'CA': ['HA'], 'CB': ['HB2', 'HB3'], 'CD1': ['HD1'], 'CE1': ['HE1'], 'CZ': ['HZ'],
                   'CE2': ['HE2'], 'CD2': ['HD2'], 'C': ['OXT']},
          'CPRO': {'CD': ['HD2', 'HD3'], 'CG': ['HG2', 'HG3'], 'CB': ['HB2', 'HB3'], 'CA': ['HA'], 'C': ['OXT']},
          'CSER': {'N': ['H'], 'CA': ['HA'], 'CB': ['HB2', 'HB3'], 'OG': ['HG'], 'C': ['OXT']},
          'CTHR': {'N': ['H'], 'CA': ['HA'], 'CB': ['HB'], 'CG2': ['HG21', 'HG22', 'HG23'], 'OG1': ['HG1'],
                   'C': ['OXT']},
          'CTRP': {'N': ['H'], 'CA': ['HA'], 'CB': ['HB2', 'HB3'], 'CD1': ['HD1'], 'NE1': ['HE1'], 'CZ2': ['HZ2'],
                   'CH2': ['HH2'], 'CZ3': ['HZ3'], 'CE3': ['HE3'], 'C': ['OXT']},
          'CTYR': {'N': ['H'], 'CA': ['HA'], 'CB': ['HB2', 'HB3'], 'CD1': ['HD1'], 'CE1': ['HE1'], 'OH': ['HH'],
                   'CE2': ['HE2'], 'CD2': ['HD2'], 'C': ['OXT']},
          'CVAL': {'N': ['H'], 'CA': ['HA'], 'CB': ['HB'], 'CG1': ['HG11', 'HG12', 'HG13'], 'CG2': ['HG21', 'HG22',
                                                                                                    'HG23'],
                   'C': ['OXT']},
          'CYS': {'N': ['H'], 'CA': ['HA'], 'CB': ['HB2', 'HB3'], 'SG': ['HG']},
          'GLN': {'N': ['H'], 'CA': ['HA'], 'CB': ['HB2', 'HB3'], 'CG': ['HG2', 'HG3'], 'NE2': ['HE21', 'HE22']},
          'GLU': {'N': ['H'], 'CA': ['HA'], 'CB': ['HB2', 'HB3'], 'CG': ['HG2', 'HG3']},
          'GLY': {'N': ['H'], 'CA': ['HA2', 'HA3']},
          'HID': {'N': ['H'], 'CA': ['HA'], 'CB': ['HB2', 'HB3'], 'ND1': ['HD1'], 'CE1': ['HE1'], 'CD2': ['HD2']},
          'HIS': {'N': ['H'], 'CA': ['HA'], 'CB': ['HB2', 'HB3'], 'CE1': ['HE1'], 'NE2': ['HE2'], 'CD2': ['HD2']},
          'ILE': {'N': ['H'], 'CA': ['HA'], 'CB': ['HB'], 'CG2': ['HG21', 'HG22', 'HG23'], 'CG1': ['HG12', 'HG13'],
                  'CD1': ['HD11', 'HD12', 'HD13']},
          'LEU': {'N': ['H'], 'CA': ['HA'], 'CB': ['HB2', 'HB3'], 'CG': ['HG'], 'CD1': ['HD11', 'HD12', 'HD13'],
                  'CD2': ['HD21', 'HD22', 'HD23']},
          'LYS': {'N': ['H'], 'CA': ['HA'], 'CB': ['HB2', 'HB3'], 'CG': ['HG2', 'HG3'], 'CD': ['HD2', 'HD3'],
                  'CE': ['HE2', 'HE3'], 'NZ': ['HZ1', 'HZ2', 'HZ3']},
          'MET': {'N': ['H'], 'CA': ['HA'], 'CB': ['HB2', 'HB3'], 'CG': ['HG2', 'HG3'], 'CE': ['HE1', 'HE2', 'HE3']},
          'NALA': {'N': ['H1', 'H2', 'H3'], 'CA': ['HA'], 'CB': ['HB1', 'HB2', 'HB3']},
          'NARG': {'N': ['H1', 'H2', 'H3'], 'CA': ['HA'], 'CB': ['HB2', 'HB3'], 'CG': ['HG2', 'HG3'], 'CD': ['HD2',
                                                                                                             'HD3'],
                   'NE': ['HE'], 'NH1': ['HH11', 'HH12'], 'NH2': ['HH21', 'HH22']},
          'NASN': {'N': ['H1', 'H2', 'H3'], 'CA': ['HA'], 'CB': ['HB2', 'HB3'], 'ND2': ['HD21', 'HD22']},
          'NASP': {'N': ['H1', 'H2', 'H3'], 'CA': ['HA'], 'CB': ['HB2', 'HB3']},
          'NCYS': {'N': ['H1', 'H2', 'H3'], 'CA': ['HA'], 'CB': ['HB2', 'HB3'], 'SG': ['HG']},
          'NGLN': {'N': ['H1', 'H2', 'H3'], 'CA': ['HA'], 'CB': ['HB2', 'HB3'], 'CG': ['HG2', 'HG3'], 'NE2': ['HE21',
                                                                                                              'HE22']},
          'NGLU': {'N': ['H1', 'H2', 'H3'], 'CA': ['HA'], 'CB': ['HB2', 'HB3'], 'CG': ['HG2', 'HG3']},
          'NGLY': {'N': ['H1', 'H2', 'H3'], 'CA': ['HA2', 'HA3']},
          'NHID': {'N': ['H1', 'H2', 'H3'], 'CA': ['HA'], 'CB': ['HB2', 'HB3'], 'ND1': ['HD1'], 'CE1': ['HE1'],
                   'CD2': ['HD2']},
          'NHIS': {'N': ['H1', 'H2', 'H3'], 'CA': ['HA'], 'CB': ['HB2', 'HB3'], 'CE1': ['HE1'], 'NE2': ['HE2'],
                   'CD2': ['HD2']},
          'NILE': {'N': ['H1', 'H2', 'H3'], 'CA': ['HA'], 'CB': ['HB'], 'CG2': ['HG21', 'HG22', 'HG23'],
                   'CG1': ['HG12', 'HG13'], 'CD1': ['HD11', 'HD12', 'HD13']},
          'NLEU': {'N': ['H1', 'H2', 'H3'], 'CA': ['HA'], 'CB': ['HB2', 'HB3'], 'CG': ['HG'],
                   'CD1': ['HD11', 'HD12', 'HD13'], 'CD2': ['HD21', 'HD22', 'HD23']},
          'NLYS': {'N': ['H1', 'H2', 'H3'], 'CA': ['HA'], 'CB': ['HB2', 'HB3'], 'CG': ['HG2', 'HG3'],
                   'CD': ['HD2', 'HD3'], 'CE': ['HE2', 'HE3'], 'NZ': ['HZ1', 'HZ2', 'HZ3']},
          'NME': {'N': ['H'], 'CH3': ['HH31', 'HH32', 'HH33']},
          'NMET': {'N': ['H1', 'H2', 'H3'], 'CA': ['HA'], 'CB': ['HB2', 'HB3'], 'CG': ['HG2', 'HG3'],
                   'CE': ['HE1', 'HE2', 'HE3']},
          'NPHE': {'N': ['H1', 'H2', 'H3'], 'CA': ['HA'], 'CB': ['HB2', 'HB3'], 'CD1': ['HD1'], 'CE1': ['HE1'],
                   'CZ': ['HZ'], 'CE2': ['HE2'], 'CD2': ['HD2']},
          'NPRO': {'N': ['H2', 'H3'], 'CD': ['HD2', 'HD3'], 'CG': ['HG2', 'HG3'], 'CB': ['HB2', 'HB3'], 'CA': ['HA']},
          'NSER': {'N': ['H1', 'H2', 'H3'], 'CA': ['HA'], 'CB': ['HB2', 'HB3'], 'OG': ['HG']},
          'NTHR': {'N': ['H1', 'H2', 'H3'], 'CA': ['HA'], 'CB': ['HB'], 'CG2': ['HG21', 'HG22', 'HG23'],
                   'OG1': ['HG1']},
          'NTRP': {'N': ['H1', 'H2', 'H3'], 'CA': ['HA'], 'CB': ['HB2', 'HB3'], 'CD1': ['HD1'], 'NE1': ['HE1'],
                   'CZ2': ['HZ2'], 'CH2': ['HH2'], 'CZ3': ['HZ3'], 'CE3': ['HE3']},
          'NTYR': {'N': ['H1', 'H2', 'H3'], 'CA': ['HA'], 'CB': ['HB2', 'HB3'], 'CD1': ['HD1'], 'CE1': ['HE1'],
                   'OH': ['HH'], 'CE2': ['HE2'], 'CD2': ['HD2']},
          'NVAL': {'N': ['H1', 'H2', 'H3'], 'CA': ['HA'], 'CB': ['HB'], 'CG1': ['HG11', 'HG12', 'HG13'],
                   'CG2': ['HG21', 'HG22', 'HG23']},
          'PHE': {'N': ['H'], 'CA': ['HA'], 'CB': ['HB2', 'HB3'], 'CD1': ['HD1'], 'CE1': ['HE1'], 'CZ': ['HZ'],
                  'CE2': ['HE2'], 'CD2': ['HD2']},
          'PRO': {'CD': ['HD2', 'HD3'], 'CG': ['HG2', 'HG3'], 'CB': ['HB2', 'HB3'], 'CA': ['HA']},
          'SER': {'N': ['H'], 'CA': ['HA'], 'CB': ['HB2', 'HB3'], 'OG': ['HG']},
          'THR': {'N': ['H'], 'CA': ['HA'], 'CB': ['HB'], 'CG2': ['HG21', 'HG22', 'HG23'], 'OG1': ['HG1']},
          'TRP': {'N': ['H'], 'CA': ['HA'], 'CB': ['HB2', 'HB3'], 'CD1': ['HD1'], 'NE1': ['HE1'], 'CZ2': ['HZ2'],
                  'CH2': ['HH2'], 'CZ3': ['HZ3'], 'CE3': ['HE3']},
          'TYR': {'N': ['H'], 'CA': ['HA'], 'CB': ['HB2', 'HB3'], 'CD1': ['HD1'], 'CE1': ['HE1'], 'OH': ['HH'],
                  'CE2': ['HE2'], 'CD2': ['HD2']},
          'VAL': {'N': ['H'], 'CA': ['HA'], 'CB': ['HB'], 'CG1': ['HG11', 'HG12', 'HG13'], 'CG2': ['HG21',
                                                                                                   'HG22', 'HG23']},
          }

# h_keys = {}
# for key in hnames:
#     h_keys[key] = {}
#     for value in hnames[key]:
#         for _value in hnames[key][value]:
#             h_keys[key][_value] = value

h_keys = {'ACE': {'H1': 'CH3', 'H2': 'CH3', 'H3': 'CH3'},
          'ALA': {'H': 'N', 'HA': 'CA', 'HB1': 'CB', 'HB2': 'CB', 'HB3': 'CB'},
          'ARG': {'H': 'N', 'HA': 'CA', 'HB2': 'CB', 'HB3': 'CB', 'HG2': 'CG', 'HG3': 'CG', 'HD2': 'CD', 'HD3': 'CD',
                  'HE': 'NE', 'HH11': 'NH1', 'HH12': 'NH1', 'HH21': 'NH2', 'HH22': 'NH2'},
          'ASN': {'H': 'N', 'HA': 'CA', 'HB2': 'CB', 'HB3': 'CB', 'HD21': 'ND2', 'HD22': 'ND2'},
          'ASP': {'H': 'N', 'HA': 'CA', 'HB2': 'CB', 'HB3': 'CB'},
          'CALA': {'H': 'N', 'HA': 'CA', 'HB1': 'CB', 'HB2': 'CB', 'HB3': 'CB', 'OXT': 'C'},
          'CARG': {'H': 'N', 'HA': 'CA', 'HB2': 'CB', 'HB3': 'CB', 'HG2': 'CG', 'HG3': 'CG', 'HD2': 'CD', 'HD3': 'CD',
                   'HE': 'NE', 'HH11': 'NH1', 'HH12': 'NH1', 'HH21': 'NH2', 'HH22': 'NH2', 'OXT': 'C'},
          'CASN': {'H': 'N', 'HA': 'CA', 'HB2': 'CB', 'HB3': 'CB', 'HD21': 'ND2', 'HD22': 'ND2', 'OXT': 'C'},
          'CASP': {'H': 'N', 'HA': 'CA', 'HB2': 'CB', 'HB3': 'CB', 'OXT': 'C'},
          'CCYS': {'H': 'N', 'HA': 'CA', 'HB2': 'CB', 'HB3': 'CB', 'HG': 'SG', 'OXT': 'C'},
          'CGLN': {'H': 'N', 'HA': 'CA', 'HB2': 'CB', 'HB3': 'CB', 'HG2': 'CG', 'HG3': 'CG', 'HE21': 'NE2',
                   'HE22': 'NE2', 'OXT': 'C'},
          'CGLU': {'H': 'N', 'HA': 'CA', 'HB2': 'CB', 'HB3': 'CB', 'HG2': 'CG', 'HG3': 'CG', 'OXT': 'C'},
          'CGLY': {'H': 'N', 'HA2': 'CA', 'HA3': 'CA', 'OXT': 'C'},
          'CHID': {'H': 'N', 'HA': 'CA', 'HB2': 'CB', 'HB3': 'CB', 'HD1': 'ND1', 'HE1': 'CE1', 'HD2': 'CD2',
                   'OXT': 'C'},
          'CHIS': {'H': 'N', 'HA': 'CA', 'HB2': 'CB', 'HB3': 'CB', 'HE1': 'CE1', 'HE2': 'NE2', 'HD2': 'CD2',
                   'OXT': 'C'},
          'CILE': {'H': 'N', 'HA': 'CA', 'HB': 'CB', 'HG21': 'CG2', 'HG22': 'CG2', 'HG23': 'CG2', 'HG12': 'CG1',
                   'HG13': 'CG1', 'HD11': 'CD1', 'HD12': 'CD1', 'HD13': 'CD1', 'OXT': 'C'},
          'CLEU': {'H': 'N', 'HA': 'CA', 'HB2': 'CB', 'HB3': 'CB', 'HG': 'CG', 'HD11': 'CD1', 'HD12': 'CD1',
                   'HD13': 'CD1', 'HD21': 'CD2', 'HD22': 'CD2', 'HD23': 'CD2', 'OXT': 'C'},
          'CLYS': {'H': 'N', 'HA': 'CA', 'HB2': 'CB', 'HB3': 'CB', 'HG2': 'CG', 'HG3': 'CG', 'HD2': 'CD', 'HD3': 'CD',
                   'HE2': 'CE', 'HE3': 'CE', 'HZ1': 'NZ', 'HZ2': 'NZ', 'HZ3': 'NZ', 'OXT': 'C'},
          'CMET': {'H': 'N', 'HA': 'CA', 'HB2': 'CB', 'HB3': 'CB', 'HG2': 'CG', 'HG3': 'CG', 'HE1': 'CE', 'HE2': 'CE',
                   'HE3': 'CE', 'OXT': 'C'},
          'CPHE': {'H': 'N', 'HA': 'CA', 'HB2': 'CB', 'HB3': 'CB', 'HD1': 'CD1', 'HE1': 'CE1', 'HZ': 'CZ', 'HE2': 'CE2',
                   'HD2': 'CD2', 'OXT': 'C'},
          'CPRO': {'HD2': 'CD', 'HD3': 'CD', 'HG2': 'CG', 'HG3': 'CG', 'HB2': 'CB', 'HB3': 'CB', 'HA': 'CA',
                   'OXT': 'C'},
          'CSER': {'H': 'N', 'HA': 'CA', 'HB2': 'CB', 'HB3': 'CB', 'HG': 'OG', 'OXT': 'C'},
          'CTHR': {'H': 'N', 'HA': 'CA', 'HB': 'CB', 'HG21': 'CG2', 'HG22': 'CG2', 'HG23': 'CG2', 'HG1': 'OG1',
                   'OXT': 'C'},
          'CTRP': {'H': 'N', 'HA': 'CA', 'HB2': 'CB', 'HB3': 'CB', 'HD1': 'CD1', 'HE1': 'NE1', 'HZ2': 'CZ2',
                   'HH2': 'CH2', 'HZ3': 'CZ3', 'HE3': 'CE3', 'OXT': 'C'},
          'CTYR': {'H': 'N', 'HA': 'CA', 'HB2': 'CB', 'HB3': 'CB', 'HD1': 'CD1', 'HE1': 'CE1', 'HH': 'OH',
                   'HE2': 'CE2', 'HD2': 'CD2', 'OXT': 'C'},
          'CVAL': {'H': 'N', 'HA': 'CA', 'HB': 'CB', 'HG11': 'CG1', 'HG12': 'CG1', 'HG13': 'CG1', 'HG21': 'CG2',
                   'HG22': 'CG2', 'HG23': 'CG2', 'OXT': 'C'},
          'CYS': {'H': 'N', 'HA': 'CA', 'HB2': 'CB', 'HB3': 'CB', 'HG': 'SG'},
          'GLN': {'H': 'N', 'HA': 'CA', 'HB2': 'CB', 'HB3': 'CB', 'HG2': 'CG', 'HG3': 'CG', 'HE21': 'NE2',
                  'HE22': 'NE2'},
          'GLU': {'H': 'N', 'HA': 'CA', 'HB2': 'CB', 'HB3': 'CB', 'HG2': 'CG', 'HG3': 'CG'},
          'GLY': {'H': 'N', 'HA2': 'CA', 'HA3': 'CA'},
          'HID': {'H': 'N', 'HA': 'CA', 'HB2': 'CB', 'HB3': 'CB', 'HD1': 'ND1', 'HE1': 'CE1', 'HD2': 'CD2'},
          'HIS': {'H': 'N', 'HA': 'CA', 'HB2': 'CB', 'HB3': 'CB', 'HE1': 'CE1', 'HE2': 'NE2', 'HD2': 'CD2'},
          'ILE': {'H': 'N', 'HA': 'CA', 'HB': 'CB', 'HG21': 'CG2', 'HG22': 'CG2', 'HG23': 'CG2', 'HG12': 'CG1',
                  'HG13': 'CG1', 'HD11': 'CD1', 'HD12': 'CD1', 'HD13': 'CD1'},
          'LEU': {'H': 'N', 'HA': 'CA', 'HB2': 'CB', 'HB3': 'CB', 'HG': 'CG', 'HD11': 'CD1', 'HD12': 'CD1',
                  'HD13': 'CD1', 'HD21': 'CD2', 'HD22': 'CD2', 'HD23': 'CD2'},
          'LYS': {'H': 'N', 'HA': 'CA', 'HB2': 'CB', 'HB3': 'CB', 'HG2': 'CG', 'HG3': 'CG', 'HD2': 'CD', 'HD3': 'CD',
                  'HE2': 'CE', 'HE3': 'CE', 'HZ1': 'NZ', 'HZ2': 'NZ', 'HZ3': 'NZ'},
          'MET': {'H': 'N', 'HA': 'CA', 'HB2': 'CB', 'HB3': 'CB', 'HG2': 'CG', 'HG3': 'CG', 'HE1': 'CE', 'HE2': 'CE',
                  'HE3': 'CE'},
          'NALA': {'H1': 'N', 'H2': 'N', 'H3': 'N', 'HA': 'CA', 'HB1': 'CB', 'HB2': 'CB', 'HB3': 'CB'},
          'NARG': {'H1': 'N', 'H2': 'N', 'H3': 'N', 'HA': 'CA', 'HB2': 'CB', 'HB3': 'CB', 'HG2': 'CG', 'HG3': 'CG',
                   'HD2': 'CD', 'HD3': 'CD', 'HE': 'NE', 'HH11': 'NH1', 'HH12': 'NH1', 'HH21': 'NH2', 'HH22': 'NH2'},
          'NASN': {'H1': 'N', 'H2': 'N', 'H3': 'N', 'HA': 'CA', 'HB2': 'CB', 'HB3': 'CB', 'HD21': 'ND2', 'HD22': 'ND2'},
          'NASP': {'H1': 'N', 'H2': 'N', 'H3': 'N', 'HA': 'CA', 'HB2': 'CB', 'HB3': 'CB'},
          'NCYS': {'H1': 'N', 'H2': 'N', 'H3': 'N', 'HA': 'CA', 'HB2': 'CB', 'HB3': 'CB', 'HG': 'SG'},
          'NGLN': {'H1': 'N', 'H2': 'N', 'H3': 'N', 'HA': 'CA', 'HB2': 'CB', 'HB3': 'CB', 'HG2': 'CG', 'HG3': 'CG',
                   'HE21': 'NE2', 'HE22': 'NE2'},
          'NGLU': {'H1': 'N', 'H2': 'N', 'H3': 'N', 'HA': 'CA', 'HB2': 'CB', 'HB3': 'CB', 'HG2': 'CG', 'HG3': 'CG'},
          'NGLY': {'H1': 'N', 'H2': 'N', 'H3': 'N', 'HA2': 'CA', 'HA3': 'CA'},
          'NHID': {'H1': 'N', 'H2': 'N', 'H3': 'N', 'HA': 'CA', 'HB2': 'CB', 'HB3': 'CB', 'HD1': 'ND1', 'HE1': 'CE1',
                   'HD2': 'CD2'},
          'NHIS': {'H1': 'N', 'H2': 'N', 'H3': 'N', 'HA': 'CA', 'HB2': 'CB', 'HB3': 'CB', 'HE1': 'CE1', 'HE2': 'NE2',
                   'HD2': 'CD2'},
          'NILE': {'H1': 'N', 'H2': 'N', 'H3': 'N', 'HA': 'CA', 'HB': 'CB', 'HG21': 'CG2', 'HG22': 'CG2',
                   'HG23': 'CG2', 'HG12': 'CG1', 'HG13': 'CG1', 'HD11': 'CD1', 'HD12': 'CD1', 'HD13': 'CD1'},
          'NLEU': {'H1': 'N', 'H2': 'N', 'H3': 'N', 'HA': 'CA', 'HB2': 'CB', 'HB3': 'CB', 'HG': 'CG', 'HD11': 'CD1',
                   'HD12': 'CD1', 'HD13': 'CD1', 'HD21': 'CD2', 'HD22': 'CD2', 'HD23': 'CD2'},
          'NLYS': {'H1': 'N', 'H2': 'N', 'H3': 'N', 'HA': 'CA', 'HB2': 'CB', 'HB3': 'CB', 'HG2': 'CG', 'HG3': 'CG',
                   'HD2': 'CD', 'HD3': 'CD', 'HE2': 'CE', 'HE3': 'CE', 'HZ1': 'NZ', 'HZ2': 'NZ', 'HZ3': 'NZ'},
          'NME': {'H': 'N', 'HH31': 'CH3', 'HH32': 'CH3', 'HH33': 'CH3'},
          'NMET': {'H1': 'N', 'H2': 'N', 'H3': 'N', 'HA': 'CA', 'HB2': 'CB', 'HB3': 'CB', 'HG2': 'CG', 'HG3': 'CG',
                   'HE1': 'CE', 'HE2': 'CE', 'HE3': 'CE'},
          'NPHE': {'H1': 'N', 'H2': 'N', 'H3': 'N', 'HA': 'CA', 'HB2': 'CB', 'HB3': 'CB', 'HD1': 'CD1', 'HE1': 'CE1',
                   'HZ': 'CZ', 'HE2': 'CE2', 'HD2': 'CD2'},
          'NPRO': {'H2': 'N', 'H3': 'N', 'HD2': 'CD', 'HD3': 'CD', 'HG2': 'CG', 'HG3': 'CG', 'HB2': 'CB', 'HB3': 'CB',
                   'HA': 'CA'},
          'NSER': {'H1': 'N', 'H2': 'N', 'H3': 'N', 'HA': 'CA', 'HB2': 'CB', 'HB3': 'CB', 'HG': 'OG'},
          'NTHR': {'H1': 'N', 'H2': 'N', 'H3': 'N', 'HA': 'CA', 'HB': 'CB', 'HG21': 'CG2', 'HG22': 'CG2', 'HG23': 'CG2',
                   'HG1': 'OG1'},
          'NTRP': {'H1': 'N', 'H2': 'N', 'H3': 'N', 'HA': 'CA', 'HB2': 'CB', 'HB3': 'CB', 'HD1': 'CD1', 'HE1': 'NE1',
                   'HZ2': 'CZ2', 'HH2': 'CH2', 'HZ3': 'CZ3', 'HE3': 'CE3'},
          'NTYR': {'H1': 'N', 'H2': 'N', 'H3': 'N', 'HA': 'CA', 'HB2': 'CB', 'HB3': 'CB', 'HD1': 'CD1', 'HE1': 'CE1',
                   'HH': 'OH', 'HE2': 'CE2', 'HD2': 'CD2'},
          'NVAL': {'H1': 'N', 'H2': 'N', 'H3': 'N', 'HA': 'CA', 'HB': 'CB', 'HG11': 'CG1', 'HG12': 'CG1', 'HG13': 'CG1',
                   'HG21': 'CG2', 'HG22': 'CG2', 'HG23': 'CG2'},
          'PHE': {'H': 'N', 'HA': 'CA', 'HB2': 'CB', 'HB3': 'CB', 'HD1': 'CD1', 'HE1': 'CE1', 'HZ': 'CZ', 'HE2': 'CE2',
                  'HD2': 'CD2'},
          'PRO': {'HD2': 'CD', 'HD3': 'CD', 'HG2': 'CG', 'HG3': 'CG', 'HB2': 'CB', 'HB3': 'CB', 'HA': 'CA'},
          'SER': {'H': 'N', 'HA': 'CA', 'HB2': 'CB', 'HB3': 'CB', 'HG': 'OG'},
          'THR': {'H': 'N', 'HA': 'CA', 'HB': 'CB', 'HG21': 'CG2', 'HG22': 'CG2', 'HG23': 'CG2', 'HG1': 'OG1'},
          'TRP': {'H': 'N', 'HA': 'CA', 'HB2': 'CB', 'HB3': 'CB', 'HD1': 'CD1', 'HE1': 'NE1', 'HZ2': 'CZ2',
                  'HH2': 'CH2', 'HZ3': 'CZ3', 'HE3': 'CE3'},
          'TYR': {'H': 'N', 'HA': 'CA', 'HB2': 'CB', 'HB3': 'CB', 'HD1': 'CD1', 'HE1': 'CE1', 'HH': 'OH', 'HE2': 'CE2',
                  'HD2': 'CD2'},
          'VAL': {'H': 'N', 'HA': 'CA', 'HB': 'CB', 'HG11': 'CG1', 'HG12': 'CG1', 'HG13': 'CG1', 'HG21': 'CG2',
                  'HG22': 'CG2', 'HG23': 'CG2'}}
